package pt.uminho.di.poo.transitarios.produto.encomenda;

import java.util.Set;

import pt.uminho.di.poo.transitarios.medida.Peso;
import pt.uminho.di.poo.transitarios.medida.Volume;
import pt.uminho.di.poo.transitarios.pessoa.ICliente;
import pt.uminho.di.poo.transitarios.produto.IProduto;
import pt.uminho.di.poo.transitarios.produto.precos.IPreco;
import pt.uminho.di.poo.transitarios.util.Morada;
import pt.uminho.di.poo.transitarios.veiculo.IVeiculo;

public class Encomenda implements IEncomenda {

	private static Float percentagemCargaMinima;

	private static IPreco precoBaseFurgao;

	private static IPreco precoBaseVan;

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public static Float getPercentagemCargaMinima() {
		return percentagemCargaMinima;
	}

	public static IPreco getPrecoBaseFurgao() {
		return precoBaseFurgao;
	}

	public static IPreco getPrecoBaseVan() {
		return precoBaseVan;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public static void setPercentagemCargaMinima(Float percentagemCargaMinima) {
		Encomenda.percentagemCargaMinima = percentagemCargaMinima;
	}

	public static void setPrecoBaseFurgao(IPreco precoBaseFurgao) {
		Encomenda.precoBaseFurgao = precoBaseFurgao;
	}

	public static void setPrecoBaseVan(IPreco precoBaseVan) {
		Encomenda.precoBaseVan = precoBaseVan;
	}

	private Set<ICarga> cargas;

	private ICliente cliente;

	private String codigo;

	private EstadoEncomenda estadoEncomenda;

	private Morada moradaEntrega;

	private Peso nivelCargaPeso;

	private Volume nivelCargaVolume;

	private IProduto produto;

	private IVeiculo veiculo;

	public Encomenda(Set<ICarga> cargas, ICliente cliente,
			EstadoEncomenda estadoEncomenda, Peso nivelCargaPeso,
			Volume nivelCargaVolume, IProduto produto, IVeiculo veiculo,
			String codigo, Morada moradaEntrega) {
		super();
		this.cargas = cargas;
		this.cliente = cliente;
		this.estadoEncomenda = estadoEncomenda;
		this.nivelCargaPeso = nivelCargaPeso;
		this.nivelCargaVolume = nivelCargaVolume;
		this.produto = produto;
		this.veiculo = veiculo;
		this.codigo = codigo;
		this.moradaEntrega = moradaEntrega;
	}

	@Override
	public void alocarCarga(ICarga carga) {
		// TODO Auto-generated method stub
	}

	@Override
	public void autorizarEncomenda() {
		// TODO Auto-generated method stub

	}

	@Override
	public int compareTo(IEncomenda o) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public void despacharEncomenda() {
		// TODO Auto-generated method stub

	}

	public Set<ICarga> getCargas() {
		return this.cargas;
	}

	public ICliente getCliente() {
		return this.cliente;
	}

	@Override
	public String getCodigo() {
		return this.codigo;
	}

	public EstadoEncomenda getEstadoEncomenda() {
		return this.estadoEncomenda;
	}

	public Morada getMoradaEntrega() {
		return this.moradaEntrega;
	}

	public Peso getNivelCargaPeso() {
		return this.nivelCargaPeso;
	}

	public Volume getNivelCargaVolume() {
		return this.nivelCargaVolume;
	}

	public IProduto getProduto() {
		return this.produto;
	}

	public IVeiculo getVeiculo() {
		return this.veiculo;
	}

	@Override
	public void precoServico() {
		// TODO Auto-generated method stub

	}

	@Override
	public void reterEncomenda() {
		// TODO Auto-generated method stub

	}

	public void setCargas(Set<ICarga> cargas) {
		this.cargas = cargas;
	}

	public void setCliente(ICliente cliente) {
		this.cliente = cliente;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	public void setEstadoEncomenda(EstadoEncomenda estadoEncomenda) {
		this.estadoEncomenda = estadoEncomenda;
	}

	public void setMoradaEntrega(Morada moradaEntrega) {
		this.moradaEntrega = moradaEntrega;
	}

	public void setNivelCargaPeso(Peso nivelCargaPeso) {
		this.nivelCargaPeso = nivelCargaPeso;
	}

	public void setNivelCargaVolume(Volume nivelCargaVolume) {
		this.nivelCargaVolume = nivelCargaVolume;
	}

	public void setProduto(IProduto produto) {
		this.produto = produto;
	}

	public void setVeiculo(IVeiculo veiculo) {
		this.veiculo = veiculo;
	}

}
